/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.tpj.database.bod_zaujmu;

import cz.tpj.database.typ_zaujimavost.Typ_zaujimavost;
import cz.tpj.database.obrazky.Obrazok;
import cz.tpj.util.ErrorDatabase;
import cz.tpj.util.Validation;

/**
 * Slouží jako přepravka. Třída je koncipována podle databázové tabulky Bod_zaujmu.
 * @author jabo
 */

public class Bod_zaujmu {
    private String id;
    private String nazov;
    private String kratky_popis;
    private String dlhy_popis;
    private String pridane;
    private String naposledy_editovane;
    private String mesto;
    private String zamestnanec;
    private String gps;
    private String obrazok;
    private Typ_zaujimavost typy_zaujimavosti;
    private Obrazok obrazky;
    
    //------------------------------konstruktory--------------------------------
    
    /**
     * konstruktor triedy Bod_zaujmu, vytvori instanciu triedy Bod_zaujmu na zaklade
     * zadanych parametrov
     * @param Id (smallint 0 az 32767)
     * @param Nazov (varchar[150])
     * @param kratky_popis (varchar[500])
     * @param dlhy_popis (varchar[2000])
     * @param pridane (DATETIME vo formate yyyy-mm-dd hh:mm:ss)
     * @param naposledy_edit (DATETIME vo formate yyyy-mm-dd hh:mm:ss)
     * @param Mesto (smallint 0 az 32767)
     * @param Zamest (smallint 0 az 32767)
     * @param Zaujimavosti (objekt typ_zaujimavost)
     * @param Obrazky (objekt Obrazok)
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public Bod_zaujmu (String Id, String Nazov, String kratky_popis, String dlhy_popis, String pridane, String naposledy_edit, String Mesto, String Zamest, Typ_zaujimavost Zaujimavosti, Obrazok Obrazky) throws ErrorDatabase {
        this.id = Id;
        this.nazov = Nazov;
        this.kratky_popis = kratky_popis;
        this.dlhy_popis = dlhy_popis;
        this.pridane = pridane;
        this.naposledy_editovane = naposledy_edit;
        this.mesto = Mesto;
        this.zamestnanec = Zamest;
        this.typy_zaujimavosti = Zaujimavosti;
        this.obrazky = Obrazky;
    }

    
    /**
     * bezparametrický konštruktor
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public Bod_zaujmu() throws ErrorDatabase {
    }
    
    //-----------------------------metody---------------------------------------
    
    /**
     * nastaví hodnotu Id, ktoré znamená Id bodu záujmu v databáze
     * @param Id (smallint o az 32767)
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setId (String Id) throws ErrorDatabase {
        Validation val = new Validation();
        this.id = val.validatedNumber("Id", Id, 0, 32767);
    }
    
    /**
     * vracia id, ktoré znamená Id bodu záujmu v databáze
     * @return id (smallint o az 32767)
     */
    
    public String getId() {
        return this.id;
    }
    
    /**
     * nastaví nazov, ktorý reprezentuje názov bodu záujmu
     * @param Nazov (varchar[150])
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setNazov(String Nazov) throws ErrorDatabase {
        Validation val = new Validation();
        this.nazov = val.validatedString("Nazov", Nazov, 0, 100);
    }
    
    /**
     * vracia hodnotu nazov, ktorá reprezentuje názov bodu záujmu
     * @return nazov (varchar[150])
     */
    
    public String getNazov () {
        return this.nazov;
    }
    
    /**
     * nastaví hodnotu kratky_popis, ktorá reprezentuje krátky popis bodu záujmu
     * @param KratkyPopis (varchar[255])
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setKratkyPopis(String KratkyPopis) throws ErrorDatabase {
        Validation val = new Validation();
        this.kratky_popis = val.validatedString("KratkyPopis", KratkyPopis, 0, 255);
    }
    
    /**
     * vracia hodnotu kratkeho popisu bodu zaujmu
     * @return kratky_popis (varchar[255])
     */
    
    public String getKratkyPopis () {
        return this.kratky_popis;
    }
    
    /**
     * nastavi hodnotu dlhy_popis, ktora reprezentuje dlhy popis bodu zaujmu
     * @param DlhyPopis (varchar[2000])
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setDlhyPopis(String DlhyPopis) throws ErrorDatabase  {
        Validation val = new Validation();
        this.dlhy_popis = val.validatedString("DlhyPopis", DlhyPopis, 0, 2000);
    }
    
    /**
     * vracia hodnotu dlheho popisu bodu zaujmu
     * @return dlhy_popis (varchar[2000])
     */
    
    public String getDlhyPopis () {
        return this.dlhy_popis;
    }
    
    public String getGps(){
    	return gps;
    }
    
    
    /**
     * nastavi hodnotu datumu, kedy bol dany bod zaujmu do databazy pridany
     * @param Pridane (DATETIME v mysql formate yyyy-mm-dd hh:mm:ss)
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setPridane(String Pridane) throws ErrorDatabase  {
        Validation val = new Validation();
        this.pridane = val.validatedDate(Pridane);
    }
    
    /**
     * vracia datum pridania bodu zaujmu do databazy
     * @return pridane (DATETIME v mysql formate yyyy-mm-dd hh:mm:ss)
     */
    
    public String getPridane () {
        return this.pridane;
    }
    
    /**
     * nastavi datum, kedy bol dany bod zaujmu naposledy editovany
     * @param NaposledyEditovane (DATETIME v mysql formate yyyy-mm-dd hh:mm:ss)
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setNaposledyEditovane(String NaposledyEditovane) throws ErrorDatabase  {
        Validation val = new Validation();
        this.naposledy_editovane = val.validatedDate(NaposledyEditovane);
    }
    
    /**
     * vracia kedy bol naposledy editovany bod zaujmu
     * @return naposledy_editovane (DATETIME v mysql formate yyyy-mm-dd hh:mm:ss)
     */
    
    public String getNaposledyEditovane () {
        return this.naposledy_editovane;
    }
    
    /**
     * nastavi id mesta pre bod zaujmu (mesto v ktorom sa bod zaujmu nachadza)
     * @param Mesto (smallint 0 az 32767)
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setMesto(String Mesto) throws ErrorDatabase  {
        Validation val = new Validation();
        this.mesto = val.validatedNumber("Mesto", Mesto, 0, 32767);
    }

    /**
     * vrati id mesta v ktorom sa bod zaujmu nachadza
     * @return mesto (smallint 0 az 32767)
     */
    
    public String getMesto() {
        return this.mesto;
    }
    
    /**
     * nastavi id zamestnanca, ktory pridal tento bod zaujmu
     * @param Zam (smallint 0 az 32767)
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setZamestnanec (String Zam) throws ErrorDatabase  {
        Validation val = new Validation();
        this.zamestnanec = val.validatedNumber("Zam", Zam, 0, 32767);
    }
    
    /**
     * vrati id zamestnanca, ktory pridal dany bod zaujmu
     * @return zamestnanec (smallint 0 az 32767)
     */
    
    public String getZamestnanec () {
        return this.zamestnanec;
    }
    
    /**
     * nastavi typ daneho bodu zaujmu
     * @param Zaujimavosti (objekt Typ_zaujimavost)
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setTypyZaujimavosti(Typ_zaujimavost Zaujimavosti) throws ErrorDatabase  {
        this.typy_zaujimavosti = Zaujimavosti;
    }
    
    
    public void setGps(String gps) throws ErrorDatabase{
    	if(gps == null){
    		this.gps = "";
    		return;
    	}
    	if(gps.length() > 50)
    		throw new ErrorDatabase(ErrorDatabase.INVALID_DATA_FORMAT, "GPS musí mít méně jak 50 znaků!");
    	this.gps = gps;
    }
    
    /**
     * vrati typ zaujimavosti daneho bodu zaujmu
     * @return typy_zaujimavosti (objekt Typ_zaujimavost)
     */
    
    public Typ_zaujimavost getTypyZaujimavosti() {
        return this.typy_zaujimavosti;
    }
    
    /**
     * nastavi obrazky k danemu bodu zaujmu (obrazky su reprezentovane objektom obrazky)
     * @param Obrazky (objekt Obrazok)
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setObrazky(Obrazok Obrazky) throws ErrorDatabase  {
        this.obrazky = Obrazky;
    }
    
    /**
     * vrati obrazky daneho bodu zaujmu (reprezentovane obhektom obrazky)
     * @return obrazky (objekt Obrazok)
     */
    
    public Obrazok getObrazky () {
        return this.obrazky;
    }
    
    /**
     * nastavi obrazok pre dany bod zaujmu, zadava sa cesta k obrazku http://...
     * @param cesta (varhcar[255])
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setObrazok(String cesta) throws ErrorDatabase {
        Validation val = new Validation();
        this.obrazok = val.validatedString("cesta", cesta, 0, 255);
    }
    
    /**
     * 
     * vrati obrazok pre dany bod zaujmu, vracia cestu http://...
     * @return obrazok (varhcar[255])
     */
    
    public String getObrazok(){
        return obrazok;
    }

}
